package dletc.job.job02;

import java.util.Set;
import java.util.TreeMap;

public class Job02_T {
	public static void main(String[] args) {
		/**
		 * 原理:将字符串里的每一个字符存入到TreeMap集合中
		 * 
		 * key   value
		 * a      3
		 * b       2
		 * c       2
		 * d       1
		 * e       1
		 * 
		 * 字符串拼接： key+ "(" + value + ")" a(5)b(4)...
		 */

			String str = "aababcabcdabcde";
			
			//定义一个TreeMap集合
			TreeMap<Character, Integer> tm = new TreeMap<>();
			
			
			//将字符串转为char数组
			char[] charArray = str.toCharArray();
			
			//遍历数组，将 获取的每一个元素装入到treemap集合中去
			for (char ch : charArray) {
				
			
				/**
				 * 1 获取每一个字符,去集合中查找当前元素在集合中有没有对应的value值
				 *  如果返回值为null,说明集合中没有和元素相同的key，
				 *  如果不为null,说明集合中有相同元素的key
				 *  
				 *  利用上面的特点：
				 *  如果返回值为null  就将元素添加到集合中，
				 *  如果返回值不为null, 说明有相同的key ， 将 value+1 替换原来的 value
				 */
				
				Integer i = tm.get(ch);
				
				if(i == null){
					//如果没有相同的元素，就添加到集合当中，然后value指定为1
					tm.put(ch, 1);
				}else{
					//如果有相同元素，就取出 value值 +1，并替换原有value值
					i++;
					tm.put(ch,i);
				}
					
			}
			
			//遍历集合做字符串拼接：
			System.out.println(tm);
			
			//遍历集合做字符串拼接
			//定义一个可变字符串对象
			StringBuffer sb= new StringBuffer();
			//遍历集合
			Set<Character> keySet = tm.keySet();
			
			for (Character key : keySet) {
				
				Integer value = tm.get(key);
				
				//a(5)b(4)c(3)d(2)e(1) 
				sb.append(key).append("(").append(value).append(")");
				
			}
			
			//StringBuffer--String
			String strs = sb.toString();
	       System.out.println(strs);
	}
}
